#ifndef _BOID_H_
#define _BOID_H_

#include "DynamicSphere.h"
#include "Physics.h"

#pragma warning( disable : 4482 )

/**
Boid represents a single boid
*/
class Boid : public DynamicSphere
{
public:
	enum BoidType {Red, Yellow};		

	Boid();
	virtual ~Boid();

	BoidType Type(void);
	void SetType(BoidType type);

	/**
	Energy is only for red boid
	*/
	float Energy(void);
	void SetEnergy(float energy);	

	Vector3 LastPosition(void);
	void SetLastPosition(Vector3& position);	

	static float ViewDistanceAllDirections(void);
	static void SetViewDistanceAllDirections(float distance);

	static float ViewDistanceForward(void);
	static void SetViewDistanceForward(float distance);

	/**
	Max speed is only for yellow boid
	*/
	static float MaxSpeed(void);
	static void SetMaxSpeed(float maxSpeed);
	
	static float MinDistance(void);
	static void SetMinDistance(float minDistance);

	static float RedStartEnergy(void);
	static void SetRedStartEnergy(float energy);

	static float YellowEnergy(void);
	static void SetYellowEnergy(float energy);

private:		
	BoidType type;
	float energy;
	Vector3 lastPosition;	
	static float viewDistanceAllDirections;
	static float viewDistanceForward;
	
	float nearestFlock;
	static float maxSpeed;
	static float minDistance;	
	static float redStartEnergy;
	static float yellowEnergy;
};

#endif